diff --git a/user_guide/database/caching.html b/user_guide/database/caching.html
index 9016ffe..485d7f4 100644
--- a/user_guide/database/caching.html
+++ b/user_guide/database/caching.html
@@ -1,220 +1,220 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
-<head>
-
-<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
-<title>Database Caching Class : CodeIgniter User Guide</title>
-
-<style type='text/css' media='all'>@import url('../userguide.css');</style>
-<link rel='stylesheet' type='text/css' media='all' href='../userguide.css' />
-
-<script type="text/javascript" src="../nav/nav.js"></script>
-<script type="text/javascript" src="../nav/prototype.lite.js"></script>
-<script type="text/javascript" src="../nav/moo.fx.js"></script>
-<script type="text/javascript" src="../nav/user_guide_menu.js"></script>
-
-<meta http-equiv='expires' content='-1' />
-<meta http-equiv= 'pragma' content='no-cache' />
-<meta name='robots' content='all' />
-<meta name='author' content='ExpressionEngine Dev Team' />
-<meta name='description' content='CodeIgniter User Guide' />
-
-</head>
-<body>
-
-<!-- START NAVIGATION -->
-<div id="nav"><div id="nav_inner"><script type="text/javascript">create_menu('../');</script></div></div>
-<div id="nav2"><a name="top"></a><a href="javascript:void(0);" onclick="myHeight.toggle();"><img src="../images/nav_toggle_darker.jpg" width="154" height="43" border="0" title="Toggle Table of Contents" alt="Toggle Table of Contents" /></a></div>
-<div id="masthead">
-<table cellpadding="0" cellspacing="0" border="0" style="width:100%">
-<tr>
-<td><h1>CodeIgniter User Guide Version 1.7</h1></td>
-<td id="breadcrumb_right"><a href="../toc.html">Table of Contents Page</a></td>
-</tr>
-</table>
-</div>
-<!-- END NAVIGATION -->
-
-
-<!-- START BREADCRUMB -->
-<table cellpadding="0" cellspacing="0" border="0" style="width:100%">
-<tr>
-<td id="breadcrumb">
-<a href="http://codeigniter.com/">CodeIgniter Home</a> &nbsp;&#8250;&nbsp;
-<a href="../index.html">User Guide Home</a> &nbsp;&#8250;&nbsp;
-<a href="index.html">Database Library</a> &nbsp;&#8250;&nbsp;
-Database Caching Class
-</td>
-<td id="searchbox"><form method="get" action="http://www.google.com/search"><input type="hidden" name="as_sitesearch" id="as_sitesearch" value="codeigniter.com/user_guide/" />Search User Guide&nbsp; <input type="text" class="input" style="width:200px;" name="q" id="q" size="31" maxlength="255" value="" />&nbsp;<input type="submit" class="submit" name="sa" value="Go" /></form></td>
-</tr>
-</table>
-<!-- END BREADCRUMB -->
-
-
-<br clear="all" />
-
-
-<!-- START CONTENT -->
-<div id="content">
-
-<h1>Database Caching Class</h1>
-
-<p>The Database Caching Class permits you to cache your queries as text files for reduced database load.</p>
-
-<p class="important"><strong>Important:</strong>&nbsp; This class is initialized automatically by the database driver
-when caching is enabled.  Do NOT load this class manually.<br /><br />
-
-<strong>Also note:</strong>&nbsp; Not all query result functions are available when you use caching. Please read this page carefully.</p>
-
-<h2>Enabling Caching</h2>
-
-<p>Caching is enabled in three steps:</p>
-
-<ul>
-<li>Create a writable directory on your server where the cache files can be stored.</li>
-<li>Set the path to your cache folder in your <dfn>application/config/database.php</dfn> file.</li>
-<li>Enable the caching feature, either globally by setting the preference in your <dfn>application/config/database.php</dfn> file, or manually as described below.</li>
-</ul>
-
-<p>Once enabled, caching will happen automatically whenever a page is loaded that contains database queries.</p>
-
-
-<h2>How Does Caching Work?</h2>
-
-<p>CodeIgniter's query caching system happens dynamically when your pages are viewed.
-When caching is enabled, the first time a web page is loaded, the query result object will
-be serialized and stored in a text file on your server. The next time the page is loaded the cache file will be used instead of
-accessing your database.  Your database usage can effectively be reduced to zero for any pages that have been cached.</p>
-
-<p>Only <dfn>read-type</dfn> (SELECT) queries can be cached, since these are the only type of queries that produce a result.
-<dfn>Write-type</dfn> (INSERT, UPDATE, etc.) queries, since they don't generate a result, will not be cached by the system.</p>
-
-<p>Cache files DO NOT expire.  Any queries that have been cached will remain cached until you delete them.  The caching system
-permits you clear caches associated with individual pages, or you can delete the entire collection of cache files.
-Typically you'll want to use the housekeeping functions described below to delete cache files after certain
-events take place, like when you've added new information to your database.</p>
-
-<h2>Will Caching Improve Your Site's Performance?</h2>
-
-<p>Getting a performance gain as a result of caching depends on many factors.
-If you have a highly optimized database under very little load, you probably won't see a performance boost.
-If your database is under heavy use you probably will see an improved response, assuming your file-system is not
-overly taxed.  Remember that caching simply changes how your information is retrieved, shifting it from being a database
-operation to a file-system one.</p>
-
-<p>In some clustered server environments, for example, caching may be detrimental since file-system operations are so intense.
-On single servers in shared environments, caching will probably be beneficial. Unfortunately there is no
-single answer to the question of whether you should cache your database.  It really depends on your situation.</p>
-
-<h2>How are Cache Files Stored?</h2>
-
-<p>CodeIgniter places the result of EACH query into its own cache file.  Sets of cache files are further organized into
-sub-folders corresponding to your controller functions.  To be precise, the sub-folders are named identically to the
-first two segments of your URI (the controller class name and function name).</p>
-
-<p>For example, let's say you have a controller called <dfn>blog</dfn> with a function called <dfn>comments</dfn> that
-contains three queries.  The caching system will create a cache folder
-called <kbd>blog+comments</kbd>, into which it will write three cache files.</p>
-
-<p>If you use dynamic queries that change based on information in your URI (when using pagination, for example), each instance of
-the query will produce its own cache file.  It's possible, therefore, to end up with many times more cache files than you have
-queries.</p>
-
-
-<h2>Managing your Cache Files</h2>
-
-<p>Since cache files do not expire, you'll need to build deletion routines into your application.  For example, let's say you have a blog
-that allows user commenting.  Whenever a new comment is submitted you'll want to delete the cache files associated with the
-controller function that serves up your comments.  You'll find two delete functions described below that help you
-clear data.</p>
-
-
-<h2>Not All Database Functions Work with Caching</h2>
-
-<p>Lastly, we need to point out that the result object that is cached is a simplified version of the full result object. For that reason,
-some of the query result functions are not available for use.</p>
-
-<p>The following functions <kbd>ARE NOT</kbd> available when using a cached result object:</p>
-
-<ul>
-<li>num_fields()</li>
-<li>field_names()</li>
-<li>field_data()</li>
-<li>free_result()</li>
-</ul>
-
-<p>Also, the two database resources (result_id and conn_id) are not available when caching, since result resources only
-pertain to run-time operations.</p>
-
-
-<br />
-
-<h1>Function Reference</h1>
-
-
-
-<h2>$this->db->cache_on()&nbsp; / &nbsp; $this->db->cache_off()</h2>
-
-<p>Manually enables/disables caching.  This can be useful if you want to
-keep certain queries from being cached.  Example:</p>
-
-<code>
-// Turn caching on<br />
-$this->db->cache_on();<br />
-$query = $this->db->query("SELECT * FROM mytable");<br />
-<br />
-// Turn caching off for this one query<br />
-$this->db->cache_off();<br />
-$query = $this->db->query("SELECT * FROM members WHERE member_id = '$current_user'");<br />
-<br />
-// Turn caching back on<br />
-$this->db->cache_on();<br />
-$query = $this->db->query("SELECT * FROM another_table");
-</code>
-
-
-<h2>$this->db->cache_delete()</h2>
-
-<p>Deletes the cache files associated with a particular page. This is useful if you need to clear caching after you update your database.</p>
-
-<p>The caching system saves your cache files to folders that correspond to the URI of the page you are viewing.  For example, if you are viewing
-a page at <dfn>example.com/index.php/blog/comments</dfn>, the caching system will put all cache files associated with it in a folder
-called <dfn>blog+comments</dfn>.  To delete those particular cache files you will use:</p>
-
-<code>$this->db->cache_delete('blog', 'comments');</code>
-
-<p>If you do not use any parameters the current URI will be used when determining what should be cleared.</p>
-
-
-<h2>$this->db->cache_delete_all()</h2>
-
-<p>Clears all existing cache files.  Example:</p>
-
-<code>$this->db->cache_delete_all();</code>
-
-
-
-
-
-
-
-
-
-
-</div>
-<!-- END CONTENT -->
-
-
-<div id="footer">
-<p>
-Previous Topic:&nbsp;&nbsp;<a href="call_function.html">Custom Function Calls</a>
-&nbsp;&nbsp;&nbsp;&middot;&nbsp;&nbsp;
-<a href="#top">Top of Page</a>&nbsp;&nbsp;&nbsp;&middot;&nbsp;&nbsp;
-<a href="../index.html">User Guide Home</a>&nbsp;&nbsp;&nbsp;&middot;&nbsp;&nbsp;
-Next Topic:&nbsp;&nbsp;<a href="forge.html">Database manipulation with Database Forge</a>
-</p>
-<p><a href="http://codeigniter.com">CodeIgniter</a> &nbsp;&middot;&nbsp; Copyright &#169; 2006-2008 &nbsp;&middot;&nbsp; <a href="http://ellislab.com/">Ellislab, Inc.</a></p>
-</div>
-
-</body>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+<head>
+
+<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
+<title>Database Caching Class : CodeIgniter User Guide</title>
+
+<style type='text/css' media='all'>@import url('../userguide.css');</style>
+<link rel='stylesheet' type='text/css' media='all' href='../userguide.css' />
+
+<script type="text/javascript" src="../nav/nav.js"></script>
+<script type="text/javascript" src="../nav/prototype.lite.js"></script>
+<script type="text/javascript" src="../nav/moo.fx.js"></script>
+<script type="text/javascript" src="../nav/user_guide_menu.js"></script>
+
+<meta http-equiv='expires' content='-1' />
+<meta http-equiv= 'pragma' content='no-cache' />
+<meta name='robots' content='all' />
+<meta name='author' content='ExpressionEngine Dev Team' />
+<meta name='description' content='CodeIgniter User Guide' />
+
+</head>
+<body>
+
+<!-- START NAVIGATION -->
+<div id="nav"><div id="nav_inner"><script type="text/javascript">create_menu('../');</script></div></div>
+<div id="nav2"><a name="top"></a><a href="javascript:void(0);" onclick="myHeight.toggle();"><img src="../images/nav_toggle_darker.jpg" width="154" height="43" border="0" title="Toggle Table of Contents" alt="Toggle Table of Contents" /></a></div>
+<div id="masthead">
+<table cellpadding="0" cellspacing="0" border="0" style="width:100%">
+<tr>
+<td><h1>CodeIgniter User Guide Version 1.7</h1></td>
+<td id="breadcrumb_right"><a href="../toc.html">Table of Contents Page</a></td>
+</tr>
+</table>
+</div>
+<!-- END NAVIGATION -->
+
+
+<!-- START BREADCRUMB -->
+<table cellpadding="0" cellspacing="0" border="0" style="width:100%">
+<tr>
+<td id="breadcrumb">
+<a href="http://codeigniter.com/">CodeIgniter Home</a> &nbsp;&#8250;&nbsp;
+<a href="../index.html">User Guide Home</a> &nbsp;&#8250;&nbsp;
+<a href="index.html">Database Library</a> &nbsp;&#8250;&nbsp;
+Database Caching Class
+</td>
+<td id="searchbox"><form method="get" action="http://www.google.com/search"><input type="hidden" name="as_sitesearch" id="as_sitesearch" value="codeigniter.com/user_guide/" />Search User Guide&nbsp; <input type="text" class="input" style="width:200px;" name="q" id="q" size="31" maxlength="255" value="" />&nbsp;<input type="submit" class="submit" name="sa" value="Go" /></form></td>
+</tr>
+</table>
+<!-- END BREADCRUMB -->
+
+
+<br clear="all" />
+
+
+<!-- START CONTENT -->
+<div id="content">
+
+<h1>Database Caching Class</h1>
+
+<p>The Database Caching Class permits you to cache your queries as text files for reduced database load.</p>
+
+<p class="important"><strong>Important:</strong>&nbsp; This class is initialized automatically by the database driver
+when caching is enabled.  Do NOT load this class manually.<br /><br />
+
+<strong>Also note:</strong>&nbsp; Not all query result functions are available when you use caching. Please read this page carefully.</p>
+
+<h2>Enabling Caching</h2>
+
+<p>Caching is enabled in three steps:</p>
+
+<ul>
+<li>Create a writable directory on your server where the cache files can be stored.</li>
+<li>Set the path to your cache folder in your <dfn>application/config/database.php</dfn> file.</li>
+<li>Enable the caching feature, either globally by setting the preference in your <dfn>application/config/database.php</dfn> file, or manually as described below.</li>
+</ul>
+
+<p>Once enabled, caching will happen automatically whenever a page is loaded that contains database queries.</p>
+
+
+<h2>How Does Caching Work?</h2>
+
+<p>CodeIgniter's query caching system happens dynamically when your pages are viewed.
+When caching is enabled, the first time a web page is loaded, the query result object will
+be serialized and stored in a text file on your server. The next time the page is loaded the cache file will be used instead of
+accessing your database.  Your database usage can effectively be reduced to zero for any pages that have been cached.</p>
+
+<p>Only <dfn>read-type</dfn> (SELECT) queries can be cached, since these are the only type of queries that produce a result.
+<dfn>Write-type</dfn> (INSERT, UPDATE, etc.) queries, since they don't generate a result, will not be cached by the system.</p>
+
+<p>Cache files DO NOT expire.  Any queries that have been cached will remain cached until you delete them.  The caching system
+permits you clear caches associated with individual pages, or you can delete the entire collection of cache files.
+Typically you'll want to use the housekeeping functions described below to delete cache files after certain
+events take place, like when you've added new information to your database.</p>
+
+<h2>Will Caching Improve Your Site's Performance?</h2>
+
+<p>Getting a performance gain as a result of caching depends on many factors.
+If you have a highly optimized database under very little load, you probably won't see a performance boost.
+If your database is under heavy use you probably will see an improved response, assuming your file-system is not
+overly taxed.  Remember that caching simply changes how your information is retrieved, shifting it from being a database
+operation to a file-system one.</p>
+
+<p>In some clustered server environments, for example, caching may be detrimental since file-system operations are so intense.
+On single servers in shared environments, caching will probably be beneficial. Unfortunately there is no
+single answer to the question of whether you should cache your database.  It really depends on your situation.</p>
+
+<h2>How are Cache Files Stored?</h2>
+
+<p>CodeIgniter places the result of EACH query into its own cache file.  Sets of cache files are further organized into
+sub-folders corresponding to your controller functions.  To be precise, the sub-folders are named identically to the
+first two segments of your URI (the controller class name and function name).</p>
+
+<p>For example, let's say you have a controller called <dfn>blog</dfn> with a function called <dfn>comments</dfn> that
+contains three queries.  The caching system will create a cache folder
+called <kbd>blog+comments</kbd>, into which it will write three cache files.</p>
+
+<p>If you use dynamic queries that change based on information in your URI (when using pagination, for example), each instance of
+the query will produce its own cache file.  It's possible, therefore, to end up with many times more cache files than you have
+queries.</p>
+
+
+<h2>Managing your Cache Files</h2>
+
+<p>Since cache files do not expire, you'll need to build deletion routines into your application.  For example, let's say you have a blog
+that allows user commenting.  Whenever a new comment is submitted you'll want to delete the cache files associated with the
+controller function that serves up your comments.  You'll find two delete functions described below that help you
+clear data.</p>
+
+
+<h2>Not All Database Functions Work with Caching</h2>
+
+<p>Lastly, we need to point out that the result object that is cached is a simplified version of the full result object. For that reason,
+some of the query result functions are not available for use.</p>
+
+<p>The following functions <kbd>ARE NOT</kbd> available when using a cached result object:</p>
+
+<ul>
+<li>num_fields()</li>
+<li>field_names()</li>
+<li>field_data()</li>
+<li>free_result()</li>
+</ul>
+
+<p>Also, the two database resources (result_id and conn_id) are not available when caching, since result resources only
+pertain to run-time operations.</p>
+
+
+<br />
+
+<h1>Function Reference</h1>
+
+
+
+<h2>$this->db->cache_on()&nbsp; / &nbsp; $this->db->cache_off()</h2>
+
+<p>Manually enables/disables caching.  This can be useful if you want to
+keep certain queries from being cached.  Example:</p>
+
+<code>
+// Turn caching on<br />
+$this->db->cache_on();<br />
+$query = $this->db->query("SELECT * FROM mytable");<br />
+<br />
+// Turn caching off for this one query<br />
+$this->db->cache_off();<br />
+$query = $this->db->query("SELECT * FROM members WHERE member_id = '$current_user'");<br />
+<br />
+// Turn caching back on<br />
+$this->db->cache_on();<br />
+$query = $this->db->query("SELECT * FROM another_table");
+</code>
+
+
+<h2>$this->db->cache_delete()</h2>
+
+<p>Deletes the cache files associated with a particular page. This is useful if you need to clear caching after you update your database.</p>
+
+<p>The caching system saves your cache files to folders that correspond to the URI of the page you are viewing.  For example, if you are viewing
+a page at <dfn>example.com/index.php/blog/comments</dfn>, the caching system will put all cache files associated with it in a folder
+called <dfn>blog+comments</dfn>.  To delete those particular cache files you will use:</p>
+
+<code>$this->db->cache_delete('blog', 'comments');</code>
+
+<p>If you do not use any parameters the current URI will be used when determining what should be cleared.</p>
+
+
+<h2>$this->db->cache_delete_all()</h2>
+
+<p>Clears all existing cache files.  Example:</p>
+
+<code>$this->db->cache_delete_all();</code>
+
+
+
+
+
+
+
+
+
+
+</div>
+<!-- END CONTENT -->
+
+
+<div id="footer">
+<p>
+Previous Topic:&nbsp;&nbsp;<a href="call_function.html">Custom Function Calls</a>
+&nbsp;&nbsp;&nbsp;&middot;&nbsp;&nbsp;
+<a href="#top">Top of Page</a>&nbsp;&nbsp;&nbsp;&middot;&nbsp;&nbsp;
+<a href="../index.html">User Guide Home</a>&nbsp;&nbsp;&nbsp;&middot;&nbsp;&nbsp;
+Next Topic:&nbsp;&nbsp;<a href="forge.html">Database manipulation with Database Forge</a>
+</p>
+<p><a href="http://codeigniter.com">CodeIgniter</a> &nbsp;&middot;&nbsp; Copyright &#169; 2006-2008 &nbsp;&middot;&nbsp; <a href="http://ellislab.com/">Ellislab, Inc.</a></p>
+</div>
+
+</body>
 </html>
\ No newline at end of file
